package com.java.star.mall.front.service;

import com.java.star.mall.common.response.JsonPage;
import com.java.star.mall.front.pojo.param.SearchParam;
import com.java.star.mall.front.pojo.vo.ProductDetailVO;
import com.java.star.mall.front.pojo.vo.ProductHotVO;
import com.java.star.mall.front.pojo.vo.ProductSwiperVO;
import com.java.star.mall.front.pojo.vo.ProductVO;

import java.util.List;

/**
 * 商品Service接口
 */
public interface ProductService {

    /**
     * 查询轮播商品
     *
     * @return 轮播商品列表
     */
    List<ProductSwiperVO> findSwiperProduct();

    /**
     * 分页查询热门商品
     *
     * @param page     当前页
     * @param pageSize 每页记录数
     * @return 商品分页VO数据
     */
    JsonPage<ProductHotVO> listHotProduct(Integer page, Integer pageSize);

    /**
     * 根据分类id查询商品列表
     *
     * @param categoryId 分类id
     * @return 商品列表数据
     */
    List<ProductVO> listProductByCategoryId(Integer categoryId);

    /**
     * 根据商品id查询商品详情
     *
     * @param productId 商品id
     * @return 商品详情VO数据
     */
    ProductDetailVO getProductDetail(Integer productId);

    /**
     * 扣减商品库存
     *
     * @param productId 商品id
     * @param num       数量
     */
    void reduceStock(Integer productId, Integer num);

    /**
     * 搜索商品
     *
     * @param searchParam 搜索参数
     * @return 商品VO
     */
    JsonPage<ProductVO> searchProduct(SearchParam searchParam);
}
